/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package jsf;

import bean.Pagos;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.ResourceBundle;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import jxl.*;
import jxl.read.biff.BiffException;

/**
 *
 * @author cesardoncel
 */

@ManagedBean(name = "adminController")
@SessionScoped
public class Consulta { 
    
    private String documento;
    private int proveedor;
    private String nit;
    private String nombreArchivo;
    private float vTotal;
    private List<Pagos> lsPagos = null;
    private Boolean consulta = false;
    private Boolean error = false;
    private String rutaArchivo = "";
    private String ARCHIVOCONFIG = "jsf.configuracion";
    private String lsemana ="";
    private String lpago ="";
    private String l1 ="Tenga en cuenta que usted verá reflejada la transferencia en su cuenta un día después de la fecha de giro.";
    private String l2 ="1. Consulte en el link con su cédula y código de proveedor";
    private String l3 ="2. Si tiene inquietudes sobre la información favor enviar un correo electrónico a pagos@brandstrat.com";
    
    public void leerArchivo() throws IOException, BiffException{
        try{        
            nit = "";
            consulta = true;
            error = true;
            nombreArchivo = "";
            ResourceBundle rb = ResourceBundle.getBundle(ARCHIVOCONFIG);
            Workbook archExcel = Workbook.getWorkbook(new File(rb.getString("archivo")));        
            int columDocumento = Integer.parseInt(rb.getString("documento"));
            int columProv = Integer.parseInt(rb.getString("proveedor"));
            //System.out.println("Hojas" + archExcel.getNumberOfSheets());
            Sheet hoja = archExcel.getSheet(0);
            int numFilas = hoja.getRows(); 
            String dato;
            String provee;            
            lsPagos = new ArrayList<Pagos>();
            for (int fila = 3; fila < numFilas; fila++) {            
                provee = hoja.getCell(columProv, fila).getContents();
                dato = hoja.getCell(columDocumento, fila).getContents();                
                //System.out.println("Datos:" + provee + "-" + proveedor  + "- _  -" + dato + "-" + documento);
                if (provee.equals(""+proveedor) && dato.equals(documento)){
                    Cell[] row = hoja.getRow(fila);
                    asignarValores(row);
                }
            }
            if (lsPagos.size() > 0){
                //lpago   = rb.getString("pago");
                lsemana  = hoja.getCell(2, 0).getContents();
                lpago    = hoja.getCell(2, 1).getContents();
                //lsemana = rb.getString("semana");
                
                Pagos pTotal = new Pagos();                
                pTotal.setProyecto("TOTAL A PAGAR");
                pTotal.setValorNeto(vTotal);
                lsPagos.add(pTotal);                
                nombreArchivo = documento;
            }
        } catch (Exception e){
            error = true;
            rutaArchivo += "" + e.getLocalizedMessage() + " - " + e.getMessage() + " - " + e.getCause();
            System.err.println("Error." + e );
        }
    }
    
    public void leerArchivoJuridica() throws IOException, BiffException{
        try{
            rutaArchivo = "";
            documento = "";
            proveedor = 0;
            consulta = true;
            error = true;
            ResourceBundle rb = ResourceBundle.getBundle(ARCHIVOCONFIG);
            Workbook archExcel = Workbook.getWorkbook(new File(rb.getString("archivo")));        
            int columDocumento = Integer.parseInt(rb.getString("documento"));        
            Sheet hoja = archExcel.getSheet(0);
            int numFilas = hoja.getRows(); 
            String dato;
            lsPagos = new ArrayList<Pagos>();
            for (int fila = 4; fila < numFilas; fila++) {            
                dato = hoja.getCell(columDocumento, fila).getContents();
                if (dato.equals(nit)){
                    Cell[] row = hoja.getRow(fila);
                    asignarValores(row);
                }
            }
            if (lsPagos.size() > 0){
                //lpago   = rb.getString("pago");
                //lsemana = rb.getString("semana");
                lsemana  = hoja.getCell(2, 0).getContents();
                lpago    = hoja.getCell(2, 1).getContents();
                
                Pagos pTotal = new Pagos();
                pTotal.setProyecto("TOTAL A PAGAR = ");
                pTotal.setValorNeto(vTotal);
                lsPagos.add(pTotal);
                nombreArchivo = nit;
            }
        } catch (Exception e){
            error = true;
            rutaArchivo += "" + e.getLocalizedMessage() + " - " + e.getMessage() + " - " + e.getCause();
            System.err.println("Error." + e );
        }
    }
    
    public void asignarValores(Cell[] row){
        try{
           
            Pagos pago = new Pagos();        
            Cell banco = row[1];
            pago.setBanco(banco.getContents());
            Cell prove = row[2];   
            int prov = 0;
            if (!prove.getContents().toString().isEmpty())
                prov = Integer.parseInt(prove.getContents());
            pago.setProveedor(prov);
            Cell docu = row[3];        
            pago.setDocumento(docu.getContents());
            Cell nom = row[4];        
            pago.setNombre(nom.getContents());
            System.out.println(pago.getNombre());
            Cell conc = row[5];        
            pago.setConcepto(conc.getContents());
            Cell cuent = row[6];        
            pago.setCuenta(cuent.getContents());
            Cell proy = row[7];        
            pago.setProyecto(proy.getContents());
            Cell val = row[8];
            float f = Float.parseFloat(val.getContents().toString());
            pago.setValorNeto(f);
            setvTotal(getvTotal() + f);
            getLsPagos().add(pago);            
            //System.out.println("vTotal: " + getvTotal());
            
        } catch (Exception e){
            error = true;
            rutaArchivo += "" + e.getLocalizedMessage() + " - " + e.getMessage() + " - " + e.getCause();
            System.err.println("Error." + e );
        }
    }
    
    public void limpiarCampos(){
        nit = "";
        lsPagos = null;
        documento = null;
        proveedor = 0;
        vTotal = 0;
        consulta = false;
        error = false;
        rutaArchivo="";
                
    }
    /**
     * @return the error
     */
    public Boolean getError() {
        return error;
    }

    /**
     * @param error the error to set
     */
    public void setError(Boolean error) {
        this.error = error;
    }

    /**
     * @return the rutaArchivo
     */
    public String getRutaArchivo() {
        return rutaArchivo;
    }

    /**
     * @param rutaArchivo the rutaArchivo to set
     */
    public void setRutaArchivo(String rutaArchivo) {
        this.rutaArchivo = rutaArchivo;
    }

    /**
     * @return the documento
     */
    public String getDocumento() {
        return documento;
    }

    /**
     * @param documento the documento to set
     */
    public void setDocumento(String documento) {
        this.documento = documento;
    }

    /**
     * @return the proveedor
     */
    public int getProveedor() {
        return proveedor;
    }

    /**
     * @param proveedor the proveedor to set
     */
    public void setProveedor(int proveedor) {
        this.proveedor = proveedor;
    }

    /**
     * @return the vTotal
     */
    public float getvTotal() {
        return vTotal;
    }

    /**
     * @param vTotal the vTotal to set
     */
    public void setvTotal(float vTotal) {
        this.vTotal = vTotal;
    }

    /**
     * @return the lsPagos
     */
    public List<Pagos> getLsPagos() {
        return lsPagos;
    }

    /**
     * @param lsPagos the lsPagos to set
     */
    public void setLsPagos(List<Pagos> lsPagos) {
        this.lsPagos = lsPagos;
    }

    /**
     * @return the consulta
     */
    public Boolean getConsulta() {
        return consulta;
    }

    /**
     * @param consulta the consulta to set
     */
    public void setConsulta(Boolean consulta) {
        this.consulta = consulta;
    }

    /**
     * @return the nit
     */
    public String getNit() {
        return nit;
    }

    /**
     * @param nit the nit to set
     */
    public void setNit(String nit) {
        this.nit = nit;
    }

    /**
     * @return the nombreArchivo
     */
    public String getNombreArchivo() {
        return nombreArchivo;
    }

    /**
     * @param nombreArchivo the nombreArchivo to set
     */
    public void setNombreArchivo(String nombreArchivo) {
        this.nombreArchivo = nombreArchivo;
    }

    /**
     * @return the l1
     */
    public String getL1() {
        return l1;
    }

    /**
     * @param l1 the l1 to set
     */
    public void setL1(String l1) {
        this.l1 = l1;
    }

    /**
     * @return the l2
     */
    public String getL2() {
        return l2;
    }

    /**
     * @param l2 the l2 to set
     */
    public void setL2(String l2) {
        this.l2 = l2;
    }

    /**
     * @return the l3
     */
    public String getL3() {
        return l3;
    }

    /**
     * @param l3 the l3 to set
     */
    public void setL3(String l3) {
        this.l3 = l3;
    }

    /**
     * @return the lsemana
     */
    public String getLsemana() {
        return lsemana;
    }

    /**
     * @param lsemana the lsemana to set
     */
    public void setLsemana(String lsemana) {
        this.lsemana = lsemana;
    }

    /**
     * @return the lpago
     */
    public String getLpago() {
        return lpago;
    }

    /**
     * @param lpago the lpago to set
     */
    public void setLpago(String lpago) {
        this.lpago = lpago;
    }
}
